package cn.tedu.csmall.common.web;


import lombok.Data;

import java.io.Serializable;


/**
 * <T>泛型 T值随意
 *
 * @param <T>
 */
@Data
public class JsonResult<T> implements Serializable {

    // 状态码
    private Integer state;

    // 消息"登陆失败 用户名不存在"
    private String message;

    // 数据
    private T data;

    // 无参构造
    private JsonResult() {
    }

    public JsonResult(Integer state, String message) {
        this.state = state;
        this.message = message;
    }

    public static JsonResult<Void> ok() {
//        JsonResult jsonResult = new JsonResult();
//        jsonResult.setSate(1);
//        return jsonResult;

        //调用下面的ok静态方法参数传入一个null值 与书签1作用相同
        return ok(null);
    }

    //                                Object... data表示可以传入0~n个参数
    //public static JsonResult ok(Object... data) {
    public static <T> JsonResult<T> ok(T data) {
        JsonResult<T> jsonResult = new JsonResult<>();
        jsonResult.setData(data);
        jsonResult.setState(State.OK.getValue());
        //包含sata属性和 参数传进来的有可能是user对象 作为data属性
        return jsonResult;
    }


    public static JsonResult<Void> fail(State state, String message) {
        return new JsonResult<>(state.getValue(), message);
    }


}
